package models

type DeviceInfo_Detail struct {
	ID                              int64   `gorm:"not null;column:ID; PRIMARY_KEY"`
	Device_ID                       int64   `gorm:"not null;column:Device_ID"`
	DeviceInfo_Concentrator_ID      *int64  `gorm:"column:DeviceInfo_Concentrator_ID"`      //DeviceInfo_Concentrator表id
	DeviceInfo_Concentrator_User_ID *int64  `gorm:"column:DeviceInfo_Concentrator_User_ID"` //DeviceInfo_Concentrator_User表id
	Serial_ID                       int64   `gorm:"not null;column:Serial_ID"`              //串口配置的外键 -1:时间戳 秒 -2：时间戳 毫秒  -3：时间格式：2024-01-01
	Serial_Slave_ID                 int64   `gorm:"not null;column:Serial_Slave_ID"`        //外键  -1:时间戳 秒 -2：时间戳 毫秒  -3：时间格式：2024-01-01
	Serial_Slave_Detail_ID          int64   `gorm:"not null;column:Serial_Slave_Detail_ID"` //-1:时间戳 秒 -2：时间戳 毫秒  -3：时间格式：2024-01-01
	Name                            string  `gorm:"column:Name"`
	MeterAddress                    int64   `gorm:"not null;column:MeterAddress"` //云平台的地址点位
	STCD                            string  `gorm:"column:STCD"`                  //mqtts 测站编码 	123
	MPCD                            string  `gorm:"column:MPCD"`                  //mqtts 测点编码	123001
	MqttKey                         string  `gorm:"column:MqttKey"`               //MQTT动态参数配置
	MqttDataType                    int     `gorm:"column:MqttDataType"`          //MQTT数据类型 1:float 2:double 3:int 4:string 5:date
	MqttStep                        *int    `gorm:"column:Step"`                  //MQTT 浮点型的步长，(小数点位数)
	ModbusTCPType                   *int64  `gorm:"column:ModbusTCPType"`         //1:功能码1 2：功能码2 3：功能码3 4：功能码4
	ModbusTCPSlaveID                string  `gorm:"column:ModbusTCPSlaveID"`      //设备地址
	ModbusTCPAddressID              *uint16 `gorm:"column:ModbusTCPAddressID"`    //寄存器地址
	ConcentratorType                *int64  `gorm:"column:ConcentratorType"`      //集中器 表类型 1：水表 2：电表 3：流量计
	ConcentratorKey                 string  `gorm:"column:ConcentratorKey"`       //集中器动态参数配置
	CollectName                     *string `gorm:"-" `
}

// 配置数据库操作的表名称
func (DeviceInfo_Detail) TableName() string {
	return "DeviceInfo_Detail"
}

// 修改or新增or删除
type EditDeviceInfoDetailRequest struct {
	DeviceInfo_Detail []DeviceInfo_Detail_Table `json:"DeviceInfo_Detail"`
}

type DeviceInfo_Detail_Table struct {
	ID                              int64
	Device_ID                       int64
	DeviceInfo_Concentrator_ID      *int64 `gorm:"column:DeviceInfo_Concentrator_ID"`      //DeviceInfo_Concentrator表id
	DeviceInfo_Concentrator_User_ID *int64 `gorm:"column:DeviceInfo_Concentrator_User_ID"` //DeviceInfo_Concentrator_User表id
	Serial_ID                       int64
	Serial_Slave_ID                 int64
	Serial_Slave_Detail_ID          int64
	Name                            string
	MeterAddress                    int64 `gorm:"column:MeterAddress"`
	STCD                            string
	MPCD                            string
	MqttKey                         string `gorm:"column:MqttKey"`
	MqttDataType                    int    `gorm:"column:MqttDataType"`
	MqttStep                        int    `gorm:"column:Step"`
	ModbusTCPType                   *int64 `gorm:"column:ModbusTCPType"`               //1:功能码1 2：功能码2 3：功能码3 4：功能码4
	ModbusTCPSlaveID                string `gorm:"column:ModbusTCPSlaveID"`            //地址位
	ModbusTCPAddressID              *int64 `gorm:"not null;column:ModbusTCPAddressID"` //寄存器地址
	ConcentratorType                *int64 `gorm:"column:ConcentratorType"`            //集中器 表类型 1：水表 2：电表 3：流量计
	ConcentratorKey                 string `gorm:"column:ConcentratorKey"`             //集中器动态参数配置
}

func (DeviceInfo_Detail_Table) TableName() string {
	return "DeviceInfo_Detail"
}
